/*
 * @Author: 橘子
 * @Date: 2022-10-07 11:45:25
 * @Project_description: 表格
 * @Description: 代码是我抄的，不会也是真的
 */
import dayjs from 'dayjs'
import _ from 'lodash'

export default {
  methods: {
    /**
     * @desc: 获取tabel表格
     * @param {*} ref  表格对象
     * @param {*} type  不传转为[{label:'名字',prop:'name'}]
     * @return {*}[{label:'名字',prop:'name'}]||{名字:'name'}
     * @Author: 橘子
     */
    _getTable(ref, type) {
      let table = []
      let tables = {}
      ref.$children.forEach((i) => {
        if (i.label !== undefined && i.prop !== undefined) {
          if (!type) {
            table.push({
              label: i.label,
              prop: i.prop,
            })
          } else {
            tables[i.label] = i.prop
          }
        }
      })
      if (!type) {
        console.log(JSON.stringify(table, null, 2))
        return table
      } else {
        console.log(JSON.stringify(tables, null, 2))
        return tables
      }
    },
    /**
     * @desc: 给add文件使用，主要解决懒的写表单校验
     * @param {*} ref 表单对象
     * @return {null}
     * @Author: 橘子
     */
    _getRules(ref) {
      let from = {}
      let rules = {}
      ref.$children.forEach((i) => {
        if (i.label !== undefined && i.prop !== undefined) {
          from[i.prop] = ''
          let itemRule = { required: true, message: `${i.label}不能为空`, trigger: 'blur' }
          rules[i.prop] = [itemRule]
          if (i.label.includes('身份证')) {
            rules[i.prop].push({ validator: 'validator.idCard', trigger: 'blur' })
          }
          if (i.label.includes('手机') || i.label.includes('电话')) {
            rules[i.prop].push({ validator: 'validator.phone', trigger: 'blur' })
          }
          if (i.prop.includes('Code') || i.prop.includes('code')) {
            rules[i.prop].push({ validator: 'validator.chinese', trigger: 'blur' })
          }
        }
      })
      //  打印到控制台
      console.log(JSON.stringify(from, null, 2))
      console.log(JSON.stringify(rules, null, 2), '存在validator的话请自行删除双引号')
    },
    /**
     * @desc: 转换数据
     * @param {*} data 原始数据list
     * @param {*} roles 规则list {key:'替换的key',role:'replace(替换)',value:{}}
     * @return {*}
     * @Author: 橘子
     */
    _dataFormat(data, roles) {
      let datas = JSON.parse(JSON.stringify(data))
      // 循环数据
      datas.forEach((i) => {
        _.forEach(i, function(value, key) {
          //从规则里面找key
          let _d = roles.find((i) => i.key == key)
          if (!_d) return
          //  开始处理规则 当规则为替换的时候
          if (_d.role == 'replace') {
            i[key] = _d.value[value]
          }
          // 自己往下加
        })
      })
      return datas
    },
    /**
     * @desc:  转换表格数据为可导入数据
     * @param {*} data 表格数据
     * @param {*} roles 规则
     * @return {*}
     * @Author: 橘子
     */
    _tableFormat(data, roles) {
      // 循环数据
      let table = []
      data.forEach((i) => {
        let _r = {}
        _.forEach(i, function(value, key) {
          // 查看当前key是否在规则内
          let _d = roles[key]
          if (_d) {
            _r[_d] = value
          }
        })
        table.push(_r)
      })
      return table
    },
    /**
     * @name: 导出表格
     * @param {Array} columns 规则Arrary [{label:'名字',prop:'name'}]
     * @param {Array} data   //数据
     * @param {string} name    表格名称
     * @param {*} type    非必填，导入excel或者csv 值为1
     * @return {void} 返回一个表格
     */
    _expTable(columns, name = '表格', data = [], type) {
      let title = name + dayjs().format('YYYY-MM-DD')
      if (!type) {
        this.$export.excel({
          columns,
          data,
          title,
        })
      } else {
        this.$export.csv({
          columns,
          data,
          title,
        })
      }
    },
  },
}
